// #ifdef H5
export const u = navigator.userAgent;
export const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; // android终端
export const isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
// #endif

/*
 * @Description: 获取URL后缀
*/
export const GetQuery = (key) => {
  let after = window.location.search;
  after = after.substr(1) || window.location.hash.split('?')[1];
  if (after) {
    const reg = new RegExp(`(^|&)${key}=([^&]*)(&|$)`);
    const r = after.match(reg);
    if (r != null) {
      return (r[2]);
    }
    return null;
  }
  return null;
};

export const isDev = process.env.NODE_ENV === 'development';
export const isPro = process.env.VUE_APP_ENV === 'production';
export const isTest = process.env.VUE_APP_ENV === 'test';

/**
 * @des: 身份证验证
*/
/* eslint-disable */
export function validateIdCard (idCard) {
    var flag = false
    // 15位和18位身份证号码的正则表达式
    var regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/

    // 如果通过该验证，说明身份证格式正确，但准确性还需计算
    if (regIdCard.test(idCard)) {
        if (idCard.length == 18) {
            var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2) // 将前17位加权因子保存在数组里
            var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2) // 这是除以11后，可能产生的11位余数、验证码，也保存成数组
            var idCardWiSum = 0 // 用来保存前17位各自乖以加权因子后的总和
            for (var i = 0; i < 17; i++) {
                idCardWiSum += idCard.substring(i, i + 1) * idCardWi[i]
            }

            var idCardMod = idCardWiSum % 11// 计算出校验码所在数组的位置
            var idCardLast = idCard.substring(17)// 得到最后一位身份证号码

            // 如果等于2，则说明校验码是10，身份证号码最后一位应该是X
            if (idCardMod == 2) {
                if (idCardLast == 'X' || idCardLast == 'x') {
                    flag = true
                } else {
                    flag = false
                }
            } else {
                // 用计算出的验证码与最后一位身份证号码匹配，如果一致，说明通过，否则是无效的身份证号码
                if (idCardLast == idCardY[idCardMod]) {
                    flag = true
                } else {
                    flag = false
                }
            }
        } else if (idCard.length == 15) {
            var id17 = idCard.substring(0, 6) + '19' + idCard.substring(6)
            var parityBit = getParityBit(id17)
            var tempIdCard = id17 + parityBit
            flag = validateIdCard(tempIdCard)
        }
     } else {
        flag = false
     }
     return flag
}


// 将腾讯/高德地图经纬度转换为百度地图经纬度
export function qqMapTransBMap(lng, lat) {
  let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
  let x = lng;
  let y = lat;
  let z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
  let theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
  let lngs = z * Math.cos(theta) + 0.0065;
  let lats = z * Math.sin(theta) + 0.006;
  
  return {
    lng: lngs,
    lat: lats 
  } 
}
// 将百度地图经纬度转换为腾讯/高德地图经纬度
export function bMapTransQQMap(lng, lat) {
  let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
  let x = lng - 0.0065;
  let y = lat - 0.006;
  let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
  let theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
  let lngs = z * Math.cos(theta);
  let lats = z * Math.sin(theta);
  
  return {
    lng: lngs,
    lat: lats        
  }   
}

export function getHost() {
  return `${location.protocol}//${location.host}`
}

// 校验http/https url
export function isURL(url) {
  const pattern = /^http(s)?:\/\/[\w-]+(\.[\w-]+)+(\:\d+)?(\/\w+)*(\?\w+=.*(\&\w+=.*)*)?$/i;
　return pattern.test(url);
}
